package aplicacion.modelo;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class ColleccionDeFantasmas {
	private ArrayList<Fantasma> fantasmas;
	
	public ColleccionDeFantasmas(){
		fantasmas=new ArrayList<Fantasma>();
	}
	
	public void add(Fantasma fantasma){
		fantasmas.add(fantasma);
	}
	
	public Fantasma get(int indice){
		if(this.indiceFueraDeRango(indice))
			throw new IllegalArgumentException();
		return fantasmas.get(indice);
	}
	
	private boolean indiceFueraDeRango(int indice) {
		if(indice>this.size())
			return true;
		return false;
	}
	
	public Collection<Fantasma> getFantasmas(){
		return fantasmas;
	}
	
	public Iterator<Fantasma> iterator(){
		return new IteradorFantasmas<Fantasma>();
	}
	
	public void	huir(){
		for(Fantasma fantasma : fantasmas) {
			fantasma.huir();
		}
	}
	
	public int size(){
		return fantasmas.size();
	}
	
	private class IteradorFantasmas<fantasma> implements Iterator<Fantasma>{

		private int posicion;
		
		public IteradorFantasmas(){
			posicion=-1;
		}
		@Override
		public boolean hasNext() {
			if((posicion>=(fantasmas.size()-1))||(fantasmas.isEmpty()))
				return false;
			return true;
		}

		@Override
		public Fantasma next() {
			posicion++;
			Fantasma fantasma=fantasmas.get(posicion);
			return fantasma;
		}

		@Override
		public void remove() {
			fantasmas.remove(posicion);
			
		}
	}

	public void cazar() {
		for(Fantasma fantasma : fantasmas) {
			fantasma.cazar();
		}
	}
}
